package com.thermal.thermal_inspection.service;

import com.thermal.thermal_inspection.vo.ClassMemberVo;
import com.thermal.thermal_inspection.vo.MemBerVo;
import org.apache.poi.ss.usermodel.Cell;

import java.sql.Time;
import java.sql.Timestamp;
import java.time.Duration;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.List;
import java.util.Optional;

public interface UtilService {
    /**
     * 判断排班表里面的班组是否都存在
     */
    public boolean isExistClass();
    /**
     * 计算两个时间字符串之间的小时差，并向上取整
     *
     * @param startTime 开始时间字符串
     * @param endTime   结束时间字符串
     * @return 向上取整后的小时数
     */
    public  int calculateRoundedHours(String startTime, String endTime);
    /**
     * 将时间字符串转换为 SQL Timestamp
     *
     * @param timeString 时间字符串
     * @return SQL Timestamp 对象
     */
    public Timestamp convertToTimestamp(String timeString);
    /**
     * 获取指定 classId 的 memberDetailVO 列表
     *
     * @param classMemberVos List<ClassMemberVo> 列表
     * @param classId       要查找的 classId
     * @return 对应 classId 的 memberDetailVO 列表，如果没有找到则返回 null 或空列表
     */
    public List<MemBerVo> getMemberDetailByClassId(List<ClassMemberVo> classMemberVos, int classId);
    /**
     * 获取指定 inspectionDataId 的 MemBerVo 对象
     *
     * @param memberVos         List<MemBerVo> 列表
     * @param inspectionDataId  要查找的 inspectionDataId
     * @return 对应 inspectionDataId 的 MemBerVo 对象，如果没有找到则返回 null
     */
    public MemBerVo getMemberByInspectionDataId(List<MemBerVo> memberVos, int inspectionDataId);
    /**
     * 根据单元格类型获取字符串值
     *
     * @param cell Excel单元格
     * @return 返回单元格的字符串表示
     */
    public String getCellStringValue(Cell cell);
    /**
     * 判断是否存在排班表
     */
    public boolean isExistScheduleExcel();

    /**
     * 判断当前时间是否在开始时间和结束时间之前
     * @param batchStartTime
     * @param batchEndTime
     * @return boolean
     */
    public boolean isFutureBatch(Timestamp batchStartTime, Timestamp batchEndTime, Timestamp inspectionStartTime);
}
